package tech.yunjing.train.dao;

import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

import java.util.List;

/**
 * purpose：定义需要使用的方法
 * Created by 吕祥 on 2017/6/8.
 */

public interface UserInfoMongoDao<T> {


    /**
     * 根据userAccount查询
     * @param userAccount 用户账号
     * @return 用户对象
     */
    T findByUserAccount(String userAccount);

    /**
     * 保存数据
     * @param userInfo 实体类
     * @return 用户对象
     */
    T saveUserInfo(T userInfo);


    /**
     * 查询所有用户信息
     * @param userInfo 用户信息
     * @return 用户对象集合
     */
    List<T> findAllUserInfo(T userInfo);

    /**
     * 判断是否存在
     * @param userAccount 用户账号
     * @return ture = 存在 false = 不存在(可用)
     */
    boolean isUserAccountExists(String userAccount);

    /**
     * 根据条件查询一个用户信息
     * @param query 查找对象
     * @return 用户信息
     */
    T findOneUserInfo(Query query);

    /**
     * 根据账号修改密码
     * @param query 查找对象
     * @param update 修改对象
     * @return 查到的对象
     */
    T updateOneUserAccount(Query query, Update update);

    /**
     * 根据账号 逻辑删除账户
     * @param query 查找对象
     * @param update 修改对象
     * @return 提示是否成功
     */
    T removeOneUserInfo(Query query, Update update);

}
